/*
 * Created on 2008-8-21
 *
 * TODO
 */
package jacky.lanlan.song.pattern.factory;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 可以读取Properties文件的标注类。和{@link PatternUtils#loadPropertyFromAnnotation()} 配合使用。
 * 这个标注使用 {@code PropertyReadFactory} 来完成Properties文件的读取工作。
 * 
 * @see PatternUtils#loadPropertyFromAnnotation()
 * @see PropertyReadFactory
 * @author Jacky.Song
 */
@Target(value = { ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface PropertiesCfg {

	/**
	 * 使用{@link PropertyFactory}来查找属性值。
	 * 
	 * @see PropertyFactory
	 */
	Class<? extends PropertyValueGenerator<String[]>> factory() default PropertyReadFactory.class;

	/**
	 * 指定类装载器。默认为系统类装载器 {@code ClassLoader}。
	 */
	Class<? extends ClassLoader> classLoader() default ClassLoader.class;

	/**
	 * Properties文件路径，相对于指定ClassLoader的装载路径根目录。 默认为 {@code "/config.properties"}
	 */
	String path() default "/config.properties";

	/**
	 * 要查找的键。
	 */
	String [] keys();
	
}
